(defun not (x)
  (if x #f #t))

(defmacro and ((:rest body))
  (if (empty? body)
      #t
    `(if ,(head body)
	 (and ,@(tail body))
       #f)))
	     

(defmacro or ((:rest body))
  (if (empty? body)
      #f
    `(if ,(head body)
	 #t
       (or ,@(tail body)))))

(defun != (x y)
  (not (= x y)))
